/*
Problem Description
A number sequence is defined as follows:

f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

Given A, B, and n, you are to calculate the value of f(n).
 

Input
The input consists of multiple test cases. Each test case contains 3 integers A, B and n
on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000).
Three zeros signal the end of input and this test case is not to be processed.
 

Output
For each test case, print the value of f(n) on a single line.
 

Sample Input
1 1 3
1 2 10
0 0 0
 

Sample Output
2
5
思路:题目给出来的很明显是递归的方式，但是由于数据太大，所以进行规律探索，得出每49一个循环，所以得出。
附大神代码:这样也可以增进理解
#include<iostream>  
#include<stdio.h>  
using namespace std;  
int f[100000005];  
int main()  
{  
    int a,b,n,i,j;  
  
    f[1]=1;f[2]=1;  
    while(scanf("%d%d%d",&a,&b,&n))  
    {  
        int s=0;//记录周期  
        if(a==0&&b==0&&n==0) break;  
        for(i=3;i<=n;i++)  
        {  
            f[i]=(a*f[i-1]+b*f[i-2])%7;  
            for(j=2;j<i;j++)  
            if(f[i-1]==f[j-1]&&f[i]==f[j])//此题可以这样做的原因就是 2个确定后就可以决定后面的  
            {  
                s=i-j;  
                //cout<<j<<" "<<s<<" >>"<<i<<endl;  
                break;  
            }  
            if(s>0) break;  
        }  
        if(s>0){  
  
                 f[n]=f[(n-j)%s+j];  
                 //cout<<"f["<<n<<"]:="<<"f["<<(n-j)%s+j<<"] "<<endl;  
               }  
        cout<<f[n]<<endl;  
  
    }  
    return 0;  
}  
*/
#include<iostream>
#include<cstdio>
using namespace std;
int fun(int A,int B,long long int n){
	n = n%49;
	if(n==1||n==2)
		return 1;
	else{
		return (A*fun(A,B,n-1)+B*fun(A,B,n-2))%7;
	}

}
int main(){
	int A,B;
	long long int n;
	while(cin>>A>>B>>n && (A!=0&&B!=0&&n!=0)){
	//	for(int i = 3;i<48;i++){
	//		printf("%d ",fun(A,B,i) );
	//	}
	printf("%d\n", fun(A,B,n));

	}
}